home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / web2ctex / ctex / c / tex2 < prev    next >
Encoding:
Text File  |  1988-05-19  |  43.8 KB  |  2,118 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. preparemag () {
  5.     preparemag_regmem 
  6.   if ( ( magset > 0 ) && ( eqtb [ 5284 ] .cint != magset ) ) 
  7.   {
  8.     {
  9.       if ( interaction == 3 ) 
  10.       wakeupterminal () ; 
  11.       printnl ( 133 ) ; 
  12.       print ( 405 ) ; 
  13.     } 
  14.     printint ( eqtb [ 5284 ] .cint ) ; 
  15.     print ( 406 ) ; 
  16.     printnl ( 407 ) ; 
  17.     {
  18.       helpptr = 2 ; 
  19.       helpline [ 1 ] = 408 ; 
  20.       helpline [ 0 ] = 409 ; 
  21.     } 
  22.     interror ( magset ) ; 
  23.     geqworddefine ( 5284 , magset ) ; 
  24.   } 
  25.   if ( ( eqtb [ 5284 ] .cint <= 0 ) || ( eqtb [ 5284 ] .cint > 32768L ) ) 
  26.   {
  27.     {
  28.       if ( interaction == 3 ) 
  29.       wakeupterminal () ; 
  30.       printnl ( 133 ) ; 
  31.       print ( 410 ) ; 
  32.     } 
  33.     {
  34.       helpptr = 1 ; 
  35.       helpline [ 0 ] = 411 ; 
  36.     } 
  37.     interror ( eqtb [ 5284 ] .cint ) ; 
  38.     geqworddefine ( 5284 , 1000 ) ; 
  39.   } 
  40.   magset = eqtb [ 5284 ] .cint ; 
  41. ztokenshow ( p ) 
  42. halfword p ; 
  43. {tokenshow_regmem 
  44.   if ( p != 0 ) 
  45.   showtokenlist ( mem [ p ] .hh .v.RH , 0 , 1000 ) ; 
  46. printmeaning () {
  47.     printmeaning_regmem 
  48.   printcmdchr ( curcmd , curchr ) ; 
  49.   if ( curcmd >= 110 ) 
  50.   {
  51.     printchar ( 58 ) ; 
  52.     println () ; 
  53.     tokenshow ( curchr ) ; 
  54.   } 
  55.   else if ( curcmd == 109 ) 
  56.   {
  57.     printchar ( 58 ) ; 
  58.     println () ; 
  59.     tokenshow ( curmark [ curchr ] ) ; 
  60.   } 
  61. showcurcmdchr () {
  62.     showcurcmdchr_regmem 
  63.   begindiagnostic () ; 
  64.   printnl ( 123 ) ; 
  65.   if ( curlist .modefield != shownmode ) 
  66.   {
  67.     printmode ( curlist .modefield ) ; 
  68.     print ( 426 ) ; 
  69.     shownmode = curlist .modefield ; 
  70.   } 
  71.   printcmdchr ( curcmd , curchr ) ; 
  72.   printchar ( 125 ) ; 
  73.   enddiagnostic ( false ) ; 
  74. showcontext () {
  75.     /* 30 */ showcontext_regmem 
  76.   schar oldsetting  ; 
  77.   integer i  ; 
  78.   integer j  ; 
  79.   integer l  ; 
  80.   integer m  ; 
  81.   integer n  ; 
  82.   integer p  ; 
  83.   integer q  ; 
  84.   baseptr = inputptr ; 
  85.   inputstack [ baseptr ] = curinput ; 
  86.   while ( true ) {
  87.       
  88.     curinput = inputstack [ baseptr ] ; 
  89.     if ( ( baseptr == inputptr ) || ( curinput .statefield != 0 ) || ( 
  90.     curinput .indexfield != 3 ) || ( curinput .locfield != 0 ) ) 
  91.     {
  92.       tally = 0 ; 
  93.       oldsetting = selector ; 
  94.       if ( curinput .statefield != 0 ) 
  95.       {
  96.     if ( curinput .namefield <= 17 ) 
  97.     if ( ( curinput .namefield == 0 ) ) 
  98.     if ( baseptr == 0 ) 
  99.     printnl ( 432 ) ; 
  100.     else printnl ( 433 ) ; 
  101.     else {
  102.         
  103.       printnl ( 434 ) ; 
  104.       if ( curinput .namefield == 17 ) 
  105.       printchar ( 42 ) ; 
  106.       else printint ( curinput .namefield - 1 ) ; 
  107.       printchar ( 62 ) ; 
  108.     } 
  109.     else {
  110.         
  111.       printnl ( 435 ) ; 
  112.       printint ( line ) ; 
  113.     } 
  114.     printchar ( 32 ) ; 
  115.     {
  116.       l = tally ; 
  117.       tally = 0 ; 
  118.       selector = 20 ; 
  119.       trickcount = 1000000L ; 
  120.     } 
  121.     if ( buffer [ curinput .limitfield ] == eqtb [ 5315 ] .cint ) 
  122.     j = curinput .limitfield ; 
  123.     else j = curinput .limitfield + 1 ; 
  124.     if ( j > 0 ) 
  125.     {register integer for_end; i = curinput .startfield ; for_end = j - 1 
  126.     ; if ( i <= for_end) do 
  127.       {
  128.         if ( i == curinput .locfield ) 
  129.         {
  130.           firstcount = tally ; 
  131.           trickcount = tally + 1 + errorline - halferrorline ; 
  132.           if ( trickcount < errorline ) 
  133.           trickcount = errorline ; 
  134.         } 
  135.         print ( buffer [ i ] ) ; 
  136.       } 
  137.     while ( i++ < for_end ) ; } 
  138.       } 
  139.       else {
  140.       
  141.     switch ( curinput .indexfield ) 
  142.     {case 0 : 
  143.       printnl ( 436 ) ; 
  144.       break ; 
  145.     case 1 : 
  146.     case 2 : 
  147.       printnl ( 437 ) ; 
  148.       break ; 
  149.     case 3 : 
  150.       if ( curinput .locfield == 0 ) 
  151.       printnl ( 438 ) ; 
  152.       else printnl ( 439 ) ; 
  153.       break ; 
  154.     case 4 : 
  155.       printnl ( 440 ) ; 
  156.       break ; 
  157.     case 5 : 
  158.       {
  159.         println () ; 
  160.         printcs ( curinput .namefield ) ; 
  161.       } 
  162.       break ; 
  163.     case 6 : 
  164.       printnl ( 441 ) ; 
  165.       break ; 
  166.     case 7 : 
  167.       printnl ( 442 ) ; 
  168.       break ; 
  169.     case 8 : 
  170.       printnl ( 443 ) ; 
  171.       break ; 
  172.     case 9 : 
  173.       printnl ( 444 ) ; 
  174.       break ; 
  175.     case 10 : 
  176.       printnl ( 445 ) ; 
  177.       break ; 
  178.     case 11 : 
  179.       printnl ( 446 ) ; 
  180.       break ; 
  181.     case 12 : 
  182.       printnl ( 447 ) ; 
  183.       break ; 
  184.     case 13 : 
  185.       printnl ( 448 ) ; 
  186.       break ; 
  187.     case 14 : 
  188.       printnl ( 449 ) ; 
  189.       break ; 
  190.     case 15 : 
  191.       printnl ( 450 ) ; 
  192.       break ; 
  193.       default: 
  194.       printnl ( 63 ) ; 
  195.       break ; 
  196.     } 
  197.     {
  198.       l = tally ; 
  199.       tally = 0 ; 
  200.       selector = 20 ; 
  201.       trickcount = 1000000L ; 
  202.     } 
  203.     if ( curinput .indexfield < 5 ) 
  204.     showtokenlist ( curinput .startfield , curinput .locfield , 100000L ) 
  205.     ; 
  206.     else showtokenlist ( mem [ curinput .startfield ] .hh .v.RH , curinput 
  207.     .locfield , 100000L ) ; 
  208.       } 
  209.       selector = oldsetting ; 
  210.       if ( trickcount == 1000000L ) 
  211.       {
  212.     firstcount = tally ; 
  213.     trickcount = tally + 1 + errorline - halferrorline ; 
  214.     if ( trickcount < errorline ) 
  215.     trickcount = errorline ; 
  216.       } 
  217.       if ( tally < trickcount ) 
  218.       m = tally - firstcount ; 
  219.       else m = trickcount - firstcount ; 
  220.       if ( l + firstcount <= halferrorline ) 
  221.       {
  222.     p = 0 ; 
  223.     n = l + firstcount ; 
  224.       } 
  225.       else {
  226.       
  227.     print ( 146 ) ; 
  228.     p = l + firstcount - halferrorline + 3 ; 
  229.     n = halferrorline ; 
  230.       } 
  231.       {register integer for_end; q = p ; for_end = firstcount - 1 ; if ( q <= 
  232.       for_end) do 
  233.     printchar ( trickbuf [ q % errorline ] ) ; 
  234.       while ( q++ < for_end ) ; } 
  235.       println () ; 
  236.       {register integer for_end; q = 1 ; for_end = n ; if ( q <= for_end) do 
  237.     printchar ( 32 ) ; 
  238.       while ( q++ < for_end ) ; } 
  239.       if ( m + n <= errorline ) 
  240.       p = firstcount + m ; 
  241.       else p = firstcount + ( errorline - n - 3 ) ; 
  242.       {register integer for_end; q = firstcount ; for_end = p - 1 ; if ( q <= 
  243.       for_end) do 
  244.     printchar ( trickbuf [ q % errorline ] ) ; 
  245.       while ( q++ < for_end ) ; } 
  246.       if ( m + n > errorline ) 
  247.       print ( 146 ) ; 
  248.     } 
  249.     if ( ( curinput .statefield != 0 ) ) 
  250.     if ( ( curinput .namefield > 17 ) || ( baseptr == 0 ) ) 
  251.     goto lab30 ; 
  252.     decr ( baseptr ) ; 
  253.   } 
  254.   lab30: curinput = inputstack [ inputptr ] ; 
  255. zbegintokenlist ( p , t ) 
  256. halfword p ; 
  257. quarterword t ; 
  258. {begintokenlist_regmem 
  259.   {
  260.     if ( inputptr > maxinstack ) 
  261.     {
  262.       maxinstack = inputptr ; 
  263.       if ( inputptr == stacksize ) 
  264.       overflow ( 451 , stacksize ) ; 
  265.     } 
  266.     inputstack [ inputptr ] = curinput ; 
  267.     incr ( inputptr ) ; 
  268.   } 
  269.   curinput .statefield = 0 ; 
  270.   curinput .startfield = p ; 
  271.   curinput .indexfield = t ; 
  272.   if ( t >= 5 ) 
  273.   {
  274.     incr ( mem [ p ] .hh .v.LH ) ; 
  275.     if ( t == 5 ) 
  276.     curinput .limitfield = paramptr ; 
  277.     else {
  278.     
  279.       curinput .locfield = mem [ p ] .hh .v.RH ; 
  280.       if ( eqtb [ 5297 ] .cint > 1 ) 
  281.       {
  282.     begindiagnostic () ; 
  283.     printnl ( 206 ) ; 
  284.     switch ( t ) 
  285.     {case 14 : 
  286.       printesc ( 219 ) ; 
  287.       break ; 
  288.     case 15 : 
  289.       printesc ( 452 ) ; 
  290.       break ; 
  291.       default: 
  292.       printcmdchr ( 71 , t + 4051 ) ; 
  293.       break ; 
  294.     } 
  295.     print ( 414 ) ; 
  296.     tokenshow ( p ) ; 
  297.     enddiagnostic ( false ) ; 
  298.       } 
  299.     } 
  300.   } 
  301.   else curinput .locfield = p ; 
  302. endtokenlist () {
  303.     endtokenlist_regmem 
  304.   if ( curinput .indexfield >= 3 ) 
  305.   {
  306.     if ( curinput .indexfield <= 4 ) 
  307.     flushlist ( curinput .startfield ) ; 
  308.     else {
  309.     
  310.       deletetokenref ( curinput .startfield ) ; 
  311.       if ( curinput .indexfield == 5 ) 
  312.       while ( paramptr > curinput .limitfield ) {
  313.       
  314.     decr ( paramptr ) ; 
  315.     flushlist ( paramstack [ paramptr ] ) ; 
  316.       } 
  317.     } 
  318.   } 
  319.   else if ( curinput .indexfield == 1 ) 
  320.   alignstate = 0 ; 
  321.   {
  322.     decr ( inputptr ) ; 
  323.     curinput = inputstack [ inputptr ] ; 
  324.   } 
  325.   {
  326.     if ( interrupt != 0 ) 
  327.     pauseforinstructions () ; 
  328.   } 
  329. backinput () {
  330.     backinput_regmem 
  331.   halfword p  ; 
  332.   while ( ( curinput .statefield == 0 ) && ( curinput .locfield == 0 ) ) 
  333.   endtokenlist () ; 
  334.   p = getavail () ; 
  335.   mem [ p ] .hh .v.LH = curtok ; 
  336.   if ( curtok < 768 ) 
  337.   if ( curtok < 512 ) 
  338.   decr ( alignstate ) ; 
  339.   else incr ( alignstate ) ; 
  340.   {
  341.     if ( inputptr > maxinstack ) 
  342.     {
  343.       maxinstack = inputptr ; 
  344.       if ( inputptr == stacksize ) 
  345.       overflow ( 451 , stacksize ) ; 
  346.     } 
  347.     inputstack [ inputptr ] = curinput ; 
  348.     incr ( inputptr ) ; 
  349.   } 
  350.   curinput .statefield = 0 ; 
  351.   curinput .startfield = p ; 
  352.   curinput .indexfield = 3 ; 
  353.   curinput .locfield = p ; 
  354. backerror () {
  355.     backerror_regmem 
  356.   OKtointerrupt = false ; 
  357.   backinput () ; 
  358.   OKtointerrupt = true ; 
  359.   error () ; 
  360. inserror () {
  361.     inserror_regmem 
  362.   OKtointerrupt = false ; 
  363.   backinput () ; 
  364.   curinput .indexfield = 4 ; 
  365.   OKtointerrupt = true ; 
  366.   error () ; 
  367. beginfilereading () {
  368.     beginfilereading_regmem 
  369.   if ( inopen == maxinopen ) 
  370.   overflow ( 453 , maxinopen ) ; 
  371.   if ( first == bufsize ) 
  372.   overflow ( 454 , bufsize ) ; 
  373.   incr ( inopen ) ; 
  374.   {
  375.     if ( inputptr > maxinstack ) 
  376.     {
  377.       maxinstack = inputptr ; 
  378.       if ( inputptr == stacksize ) 
  379.       overflow ( 451 , stacksize ) ; 
  380.     } 
  381.     inputstack [ inputptr ] = curinput ; 
  382.     incr ( inputptr ) ; 
  383.   } 
  384.   curinput .indexfield = inopen ; 
  385.   linestack [ curinput .indexfield ] = line ; 
  386.   curinput .startfield = first ; 
  387.   curinput .statefield = 1 ; 
  388.   curinput .namefield = 0 ; 
  389. endfilereading () {
  390.     endfilereading_regmem 
  391.   first = curinput .startfield ; 
  392.   line = linestack [ curinput .indexfield ] ; 
  393.   if ( curinput .namefield > 17 ) 
  394.   aclose ( inputfile [ curinput .indexfield ] ) ; 
  395.   {
  396.     decr ( inputptr ) ; 
  397.     curinput = inputstack [ inputptr ] ; 
  398.   } 
  399.   decr ( inopen ) ; 
  400. clearforerrorprompt () {
  401.     clearforerrorprompt_regmem 
  402.   while ( ( curinput .statefield != 0 ) && ( curinput .namefield == 0 ) && ( 
  403.   inputptr > 0 ) && ( curinput .locfield > curinput .limitfield ) ) 
  404.   endfilereading () ; 
  405.   println () ; 
  406.   clearterminal () ; 
  407. checkoutervalidity () {
  408.     checkoutervalidity_regmem 
  409.   halfword p  ; 
  410.   halfword q  ; 
  411.   if ( scannerstatus != 0 ) 
  412.   {
  413.     deletionsallowed = false ; 
  414.     if ( curcs != 0 ) 
  415.     {
  416.       if ( ( curinput .statefield == 0 ) || ( curinput .namefield < 1 ) || ( 
  417.       curinput .namefield > 17 ) ) 
  418.       {
  419.     p = getavail () ; 
  420.     mem [ p ] .hh .v.LH = 4096 + curcs ; 
  421.     begintokenlist ( p , 3 ) ; 
  422.       } 
  423.       curcmd = 10 ; 
  424.       curchr = 32 ; 
  425.     } 
  426.     if ( scannerstatus > 1 ) 
  427.     {
  428.       runaway () ; 
  429.       if ( curcs == 0 ) 
  430.       {
  431.     if ( interaction == 3 ) 
  432.     wakeupterminal () ; 
  433.     printnl ( 133 ) ; 
  434.     print ( 462 ) ; 
  435.       } 
  436.       else {
  437.       
  438.     curcs = 0 ; 
  439.     {
  440.       if ( interaction == 3 ) 
  441.       wakeupterminal () ; 
  442.       printnl ( 133 ) ; 
  443.       print ( 463 ) ; 
  444.     } 
  445.       } 
  446.       print ( 464 ) ; 
  447.       p = getavail () ; 
  448.       switch ( scannerstatus ) 
  449.       {case 2 : 
  450.     {
  451.       print ( 428 ) ; 
  452.       mem [ p ] .hh .v.LH = 637 ; 
  453.     } 
  454.     break ; 
  455.       case 3 : 
  456.     {
  457.       print ( 470 ) ; 
  458.       mem [ p ] .hh .v.LH = partoken ; 
  459.       longstate = 112 ; 
  460.     } 
  461.     break ; 
  462.       case 4 : 
  463.     {
  464.       print ( 430 ) ; 
  465.       mem [ p ] .hh .v.LH = 637 ; 
  466.       q = p ; 
  467.       p = getavail () ; 
  468.       mem [ p ] .hh .v.RH = q ; 
  469.       mem [ p ] .hh .v.LH = 7355 ; 
  470.       alignstate = -1000000L ; 
  471.     } 
  472.     break ; 
  473.       case 5 : 
  474.     {
  475.       print ( 431 ) ; 
  476.       mem [ p ] .hh .v.LH = 637 ; 
  477.     } 
  478.     break ; 
  479.       } 
  480.       begintokenlist ( p , 4 ) ; 
  481.       print ( 465 ) ; 
  482.       sprintcs ( warningindex ) ; 
  483.       {
  484.     helpptr = 4 ; 
  485.     helpline [ 3 ] = 466 ; 
  486.     helpline [ 2 ] = 467 ; 
  487.     helpline [ 1 ] = 468 ; 
  488.     helpline [ 0 ] = 469 ; 
  489.       } 
  490.       error () ; 
  491.     } 
  492.     else {
  493.     
  494.       {
  495.     if ( interaction == 3 ) 
  496.     wakeupterminal () ; 
  497.     printnl ( 133 ) ; 
  498.     print ( 456 ) ; 
  499.       } 
  500.       printcmdchr ( 104 , curif ) ; 
  501.       print ( 457 ) ; 
  502.       printint ( skipline ) ; 
  503.       {
  504.     helpptr = 3 ; 
  505.     helpline [ 2 ] = 458 ; 
  506.     helpline [ 1 ] = 459 ; 
  507.     helpline [ 0 ] = 460 ; 
  508.       } 
  509.       if ( curcs != 0 ) 
  510.       curcs = 0 ; 
  511.       else helpline [ 2 ] = 461 ; 
  512.       curtok = 7358 ; 
  513.       inserror () ; 
  514.     } 
  515.     deletionsallowed = true ; 
  516.   } 
  517. getnext () {
  518.     /* 20 25 21 26 40 10 */ getnext_regmem 
  519.   integer k  ; 
  520.   halfword t  ; 
  521.   schar cat  ; 
  522.   lab20: curcs = 0 ; 
  523.   if ( curinput .statefield != 0 ) 
  524.   {
  525.     lab25: if ( curinput .locfield <= curinput .limitfield ) 
  526.     {
  527.       curchr = buffer [ curinput .locfield ] ; 
  528.       incr ( curinput .locfield ) ; 
  529.       lab21: curcmd = eqtb [ 4627 + curchr ] .hh .v.RH ; 
  530.       switch ( curinput .statefield + curcmd ) 
  531.       {case 10 : 
  532.       case 26 : 
  533.       case 42 : 
  534.       case 27 : 
  535.       case 43 : 
  536.     goto lab25 ; 
  537.     break ; 
  538.       case 1 : 
  539.       case 17 : 
  540.       case 33 : 
  541.     {
  542.       if ( curinput .locfield > curinput .limitfield ) 
  543.       curcs = 257 ; 
  544.       else {
  545.           
  546.         lab26: k = curinput .locfield ; 
  547.         curchr = buffer [ k ] ; 
  548.         cat = eqtb [ 4627 + curchr ] .hh .v.RH ; 
  549.         incr ( k ) ; 
  550.         if ( cat == 11 ) 
  551.         curinput .statefield = 17 ; 
  552.         else if ( cat == 10 ) 
  553.         curinput .statefield = 17 ; 
  554.         else curinput .statefield = 1 ; 
  555.         if ( ( cat == 11 ) && ( k <= curinput .limitfield ) ) 
  556.         {
  557.           do {
  558.           curchr = buffer [ k ] ; 
  559.         cat = eqtb [ 4627 + curchr ] .hh .v.RH ; 
  560.         incr ( k ) ; 
  561.           } while ( ! ( ( cat != 11 ) || ( k > curinput .limitfield ) ) ) 
  562.           ; 
  563.           {
  564.         if ( buffer [ k ] == curchr ) 
  565.         if ( cat == 7 ) 
  566.         if ( k < curinput .limitfield ) 
  567.         {
  568.           curchr = buffer [ k + 1 ] ; 
  569.           if ( curchr < 64 ) 
  570.           buffer [ k - 1 ] = curchr + 64 ; 
  571.           else buffer [ k - 1 ] = curchr - 64 ; 
  572.           curinput .limitfield = curinput .limitfield - 2 ; 
  573.           first = first - 2 ; 
  574.           while ( k <= curinput .limitfield ) {
  575.               
  576.             buffer [ k ] = buffer [ k + 2 ] ; 
  577.             incr ( k ) ; 
  578.           } 
  579.           goto lab26 ; 
  580.         } 
  581.           } 
  582.           if ( cat != 11 ) 
  583.           decr ( k ) ; 
  584.           if ( k > curinput .locfield + 1 ) 
  585.           {
  586.         curcs = idlookup ( curinput .locfield , k - curinput .locfield 
  587.         ) ; 
  588.         curinput .locfield = k ; 
  589.         goto lab40 ; 
  590.           } 
  591.         } 
  592.         else {
  593.         
  594.           if ( buffer [ k ] == curchr ) 
  595.           if ( cat == 7 ) 
  596.           if ( k < curinput .limitfield ) 
  597.           {
  598.         curchr = buffer [ k + 1 ] ; 
  599.         if ( curchr < 64 ) 
  600.         buffer [ k - 1 ] = curchr + 64 ; 
  601.         else buffer [ k - 1 ] = curchr - 64 ; 
  602.         curinput .limitfield = curinput .limitfield - 2 ; 
  603.         first = first - 2 ; 
  604.         while ( k <= curinput .limitfield ) {
  605.             
  606.           buffer [ k ] = buffer [ k + 2 ] ; 
  607.           incr ( k ) ; 
  608.         } 
  609.         goto lab26 ; 
  610.           } 
  611.         } 
  612.         curcs = 129 + buffer [ curinput .locfield ] ; 
  613.         incr ( curinput .locfield ) ; 
  614.       } 
  615.       lab40: curcmd = eqtb [ curcs ] .hh.b0 ; 
  616.       curchr = eqtb [ curcs ] .hh .v.RH ; 
  617.       if ( curcmd >= 112 ) 
  618.       checkoutervalidity () ; 
  619.     } 
  620.     break ; 
  621.       case 14 : 
  622.       case 30 : 
  623.       case 46 : 
  624.     {
  625.       curcs = curchr + 1 ; 
  626.       curcmd = eqtb [ curcs ] .hh.b0 ; 
  627.       curchr = eqtb [ curcs ] .hh .v.RH ; 
  628.       curinput .statefield = 1 ; 
  629.       if ( curcmd >= 112 ) 
  630.       checkoutervalidity () ; 
  631.     } 
  632.     break ; 
  633.       case 8 : 
  634.       case 24 : 
  635.       case 40 : 
  636.     {
  637.       if ( ( curchr == buffer [ curinput .locfield ] ) && ( curinput 
  638.       .locfield < curinput .limitfield ) ) 
  639.       {
  640.         if ( buffer [ curinput .locfield + 1 ] < 64 ) 
  641.         curchr = buffer [ curinput .locfield + 1 ] + 64 ; 
  642.         else curchr = buffer [ curinput .locfield + 1 ] - 64 ; 
  643.         curinput .locfield = curinput .locfield + 2 ; 
  644.         goto lab21 ; 
  645.       } 
  646.       curinput .statefield = 1 ; 
  647.     } 
  648.     break ; 
  649.       case 16 : 
  650.       case 32 : 
  651.       case 48 : 
  652.     {
  653.       {
  654.         if ( interaction == 3 ) 
  655.         wakeupterminal () ; 
  656.         printnl ( 133 ) ; 
  657.         print ( 471 ) ; 
  658.       } 
  659.       {
  660.         helpptr = 2 ; 
  661.         helpline [ 1 ] = 472 ; 
  662.         helpline [ 0 ] = 473 ; 
  663.       } 
  664.       deletionsallowed = false ; 
  665.       error () ; 
  666.       deletionsallowed = true ; 
  667.       goto lab20 ; 
  668.     } 
  669.     break ; 
  670.       case 11 : 
  671.     {
  672.       curinput .statefield = 17 ; 
  673.       curchr = 32 ; 
  674.     } 
  675.     break ; 
  676.       case 6 : 
  677.     {
  678.       curinput .locfield = curinput .limitfield + 1 ; 
  679.       curcmd = 10 ; 
  680.       curchr = 32 ; 
  681.     } 
  682.     break ; 
  683.       case 22 : 
  684.       case 15 : 
  685.       case 31 : 
  686.       case 47 : 
  687.     {
  688.       curinput .locfield = curinput .limitfield + 1 ; 
  689.       goto lab25 ; 
  690.     } 
  691.     break ; 
  692.       case 38 : 
  693.     {
  694.       curinput .locfield = curinput .limitfield + 1 ; 
  695.       curcs = parloc ; 
  696.       curcmd = eqtb [ curcs ] .hh.b0 ; 
  697.       curchr = eqtb [ curcs ] .hh .v.RH ; 
  698.       if ( curcmd >= 112 ) 
  699.       checkoutervalidity () ; 
  700.     } 
  701.     break ; 
  702.       case 2 : 
  703.     incr ( alignstate ) ; 
  704.     break ; 
  705.       case 18 : 
  706.       case 34 : 
  707.     {
  708.       curinput .statefield = 1 ; 
  709.       incr ( alignstate ) ; 
  710.     } 
  711.     break ; 
  712.       case 3 : 
  713.     decr ( alignstate ) ; 
  714.     break ; 
  715.       case 19 : 
  716.       case 35 : 
  717.     {
  718.       curinput .statefield = 1 ; 
  719.       decr ( alignstate ) ; 
  720.     } 
  721.     break ; 
  722.       case 20 : 
  723.       case 21 : 
  724.       case 23 : 
  725.       case 25 : 
  726.       case 28 : 
  727.       case 29 : 
  728.       case 36 : 
  729.       case 37 : 
  730.       case 39 : 
  731.       case 41 : 
  732.       case 44 : 
  733.       case 45 : 
  734.     curinput .statefield = 1 ; 
  735.     break ; 
  736.     default: 
  737.     ; 
  738.     break ; 
  739.       } 
  740.     } 
  741.     else {
  742.     
  743.       curinput .statefield = 33 ; 
  744.       if ( curinput .namefield > 17 ) 
  745.       {
  746.     incr ( line ) ; 
  747.     first = curinput .startfield ; 
  748.     if ( ! forceeof ) 
  749.     {
  750.       if ( inputln ( inputfile [ curinput .indexfield ] , true ) ) 
  751.       firmuptheline () ; 
  752.       else forceeof = true ; 
  753.     } 
  754.     if ( forceeof ) 
  755.     {
  756.       printchar ( 41 ) ; 
  757.       forceeof = false ; 
  758.       termflush ( stdout ) ; 
  759.       endfilereading () ; 
  760.       checkoutervalidity () ; 
  761.       goto lab20 ; 
  762.     } 
  763.     if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  764.     decr ( curinput .limitfield ) ; 
  765.     else buffer [ curinput .limitfield ] = eqtb [ 5315 ] .cint ; 
  766.     first = curinput .limitfield + 1 ; 
  767.     curinput .locfield = curinput .startfield ; 
  768.       } 
  769.       else {
  770.       
  771.     if ( ! ( curinput .namefield == 0 ) ) 
  772.     {
  773.       curcmd = 0 ; 
  774.       curchr = 0 ; 
  775.       return ; 
  776.     } 
  777.     if ( inputptr > 0 ) 
  778.     {
  779.       endfilereading () ; 
  780.       goto lab20 ; 
  781.     } 
  782.     if ( selector < 18 ) 
  783.     openlogfile () ; 
  784.     if ( interaction > 1 ) 
  785.     {
  786.       if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  787.       incr ( curinput .limitfield ) ; 
  788.       if ( curinput .limitfield == curinput .startfield ) 
  789.       printnl ( 474 ) ; 
  790.       println () ; 
  791.       first = curinput .startfield ; 
  792.       {
  793.         wakeupterminal () ; 
  794.         print ( 42 ) ; 
  795.         terminput () ; 
  796.       } 
  797.       curinput .limitfield = last ; 
  798.       if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  799.       decr ( curinput .limitfield ) ; 
  800.       else buffer [ curinput .limitfield ] = eqtb [ 5315 ] .cint ; 
  801.       first = curinput .limitfield + 1 ; 
  802.       curinput .locfield = curinput .startfield ; 
  803.     } 
  804.     else fatalerror ( 475 ) ; 
  805.       } 
  806.       {
  807.     if ( interrupt != 0 ) 
  808.     pauseforinstructions () ; 
  809.       } 
  810.       goto lab25 ; 
  811.     } 
  812.   } 
  813.   else if ( curinput .locfield != 0 ) 
  814.   {
  815.     t = mem [ curinput .locfield ] .hh .v.LH ; 
  816.     curinput .locfield = mem [ curinput .locfield ] .hh .v.RH ; 
  817.     if ( t >= 4096 ) 
  818.     {
  819.       curcs = t - 4096 ; 
  820.       curcmd = eqtb [ curcs ] .hh.b0 ; 
  821.       curchr = eqtb [ curcs ] .hh .v.RH ; 
  822.       if ( curcmd >= 112 ) 
  823.       if ( curcmd == 115 ) 
  824.       {
  825.     curcs = mem [ curinput .locfield ] .hh .v.LH - 4096 ; 
  826.     curinput .locfield = 0 ; 
  827.     curcmd = eqtb [ curcs ] .hh.b0 ; 
  828.     curchr = eqtb [ curcs ] .hh .v.RH ; 
  829.     if ( curcmd > 99 ) 
  830.     {
  831.       curcmd = 0 ; 
  832.       curchr = 257 ; 
  833.     } 
  834.       } 
  835.       else checkoutervalidity () ; 
  836.     } 
  837.     else {
  838.     
  839.       curcmd = t / 256 ; 
  840.       curchr = t % 256 ; 
  841.       switch ( curcmd ) 
  842.       {case 1 : 
  843.     incr ( alignstate ) ; 
  844.     break ; 
  845.       case 2 : 
  846.     decr ( alignstate ) ; 
  847.     break ; 
  848.       case 5 : 
  849.     {
  850.       begintokenlist ( paramstack [ curinput .limitfield + curchr - 1 ] , 
  851.       0 ) ; 
  852.       goto lab20 ; 
  853.     } 
  854.     break ; 
  855.     default: 
  856.     ; 
  857.     break ; 
  858.       } 
  859.     } 
  860.   } 
  861.   else {
  862.       
  863.     endtokenlist () ; 
  864.     goto lab20 ; 
  865.   } 
  866.   if ( curcmd <= 5 ) 
  867.   if ( curcmd >= 4 ) 
  868.   if ( alignstate == 0 ) 
  869.   {
  870.     if ( scannerstatus == 4 ) 
  871.     fatalerror ( 762 ) ; 
  872.     curcmd = mem [ curalign + 5 ] .hh .v.LH ; 
  873.     mem [ curalign + 5 ] .hh .v.LH = curchr ; 
  874.     if ( curcmd == 63 ) 
  875.     begintokenlist ( memtop - 10 , 2 ) ; 
  876.     else begintokenlist ( mem [ curalign + 2 ] .cint , 2 ) ; 
  877.     alignstate = 1000000L ; 
  878.     goto lab20 ; 
  879.   } 
  880. firmuptheline () {
  881.     firmuptheline_regmem 
  882.   integer k  ; 
  883.   curinput .limitfield = last ; 
  884.   if ( eqtb [ 5295 ] .cint > 0 ) 
  885.   if ( interaction > 1 ) 
  886.   {
  887.     wakeupterminal () ; 
  888.     println () ; 
  889.     if ( curinput .startfield < curinput .limitfield ) 
  890.     {register integer for_end; k = curinput .startfield ; for_end = curinput 
  891.     .limitfield - 1 ; if ( k <= for_end) do 
  892.       print ( buffer [ k ] ) ; 
  893.     while ( k++ < for_end ) ; } 
  894.     first = curinput .limitfield ; 
  895.     {
  896.       wakeupterminal () ; 
  897.       print ( 476 ) ; 
  898.       terminput () ; 
  899.     } 
  900.     if ( last > first ) 
  901.     {
  902.       {register integer for_end; k = first ; for_end = last - 1 ; if ( k <= 
  903.       for_end) do 
  904.     buffer [ k + curinput .startfield - first ] = buffer [ k ] ; 
  905.       while ( k++ < for_end ) ; } 
  906.       curinput .limitfield = curinput .startfield + last - first ; 
  907.     } 
  908.   } 
  909. gettoken () {
  910.     gettoken_regmem 
  911.   nonewcontrolsequence = false ; 
  912.   getnext () ; 
  913.   nonewcontrolsequence = true ; 
  914.   if ( curcs == 0 ) 
  915.   curtok = ( curcmd * 256 ) + curchr ; 
  916.   else curtok = 4096 + curcs ; 
  917. macrocall () {
  918.     /* 10 22 30 31 40 */ macrocall_regmem 
  919.   halfword r  ; 
  920.   halfword p  ; 
  921.   halfword q  ; 
  922.   halfword s  ; 
  923.   halfword t  ; 
  924.   halfword u, v  ; 
  925.   halfword rbraceptr  ; 
  926.   smallnumber n  ; 
  927.   halfword unbalance  ; 
  928.   halfword m  ; 
  929.   halfword refcount  ; 
  930.   smallnumber savescannerstatus  ; 
  931.   halfword savewarningindex  ; 
  932.   ASCIIcode matchchr  ; 
  933.   savescannerstatus = scannerstatus ; 
  934.   savewarningindex = warningindex ; 
  935.   warningindex = curcs ; 
  936.   refcount = curchr ; 
  937.   r = mem [ refcount ] .hh .v.RH ; 
  938.   n = 0 ; 
  939.   if ( eqtb [ 5297 ] .cint > 0 ) 
  940.   {
  941.     begindiagnostic () ; 
  942.     println () ; 
  943.     printcs ( warningindex ) ; 
  944.     tokenshow ( refcount ) ; 
  945.     enddiagnostic ( false ) ; 
  946.   } 
  947.   if ( mem [ r ] .hh .v.LH != 3584 ) 
  948.   {
  949.     scannerstatus = 3 ; 
  950.     unbalance = 0 ; 
  951.     longstate = eqtb [ curcs ] .hh.b0 ; 
  952.     if ( longstate >= 112 ) 
  953.     longstate = longstate - 2 ; 
  954.     do {
  955.     if ( ( mem [ r ] .hh .v.LH > 3455 ) || ( mem [ r ] .hh .v.LH < 3328 ) 
  956.       ) 
  957.       s = 0 ; 
  958.       else {
  959.       
  960.     matchchr = mem [ r ] .hh .v.LH - 3328 ; 
  961.     s = mem [ r ] .hh .v.RH ; 
  962.     r = s ; 
  963.     p = memtop - 3 ; 
  964.     mem [ p ] .hh .v.RH = 0 ; 
  965.     m = 0 ; 
  966.       } 
  967.       lab22: gettoken () ; 
  968.       if ( curtok == mem [ r ] .hh .v.LH ) 
  969.       {
  970.     r = mem [ r ] .hh .v.RH ; 
  971.     if ( ( mem [ r ] .hh .v.LH >= 3328 ) && ( mem [ r ] .hh .v.LH <= 3584 
  972.     ) ) 
  973.     {
  974.       if ( curtok < 512 ) 
  975.       decr ( alignstate ) ; 
  976.       goto lab40 ; 
  977.     } 
  978.     else goto lab22 ; 
  979.       } 
  980.       if ( s != r ) 
  981.       if ( s == 0 ) 
  982.       {
  983.     {
  984.       if ( interaction == 3 ) 
  985.       wakeupterminal () ; 
  986.       printnl ( 133 ) ; 
  987.       print ( 508 ) ; 
  988.     } 
  989.     sprintcs ( warningindex ) ; 
  990.     print ( 509 ) ; 
  991.     {
  992.       helpptr = 4 ; 
  993.       helpline [ 3 ] = 510 ; 
  994.       helpline [ 2 ] = 511 ; 
  995.       helpline [ 1 ] = 512 ; 
  996.       helpline [ 0 ] = 513 ; 
  997.     } 
  998.     error () ; 
  999.     goto lab10 ; 
  1000.       } 
  1001.       else {
  1002.       
  1003.     t = s ; 
  1004.     do {
  1005.         { 
  1006.         q = getavail () ; 
  1007.         mem [ p ] .hh .v.RH = q ; 
  1008.         mem [ q ] .hh .v.LH = mem [ t ] .hh .v.LH ; 
  1009.         p = q ; 
  1010.       } 
  1011.       incr ( m ) ; 
  1012.       u = mem [ t ] .hh .v.RH ; 
  1013.       v = s ; 
  1014.       while ( true ) {
  1015.           
  1016.         if ( u == r ) 
  1017.         if ( curtok != mem [ v ] .hh .v.LH ) 
  1018.         goto lab30 ; 
  1019.         else {
  1020.         
  1021.           r = mem [ v ] .hh .v.RH ; 
  1022.           goto lab22 ; 
  1023.         } 
  1024.         if ( mem [ u ] .hh .v.LH != mem [ v ] .hh .v.LH ) 
  1025.         goto lab30 ; 
  1026.         u = mem [ u ] .hh .v.RH ; 
  1027.         v = mem [ v ] .hh .v.RH ; 
  1028.       } 
  1029.       lab30: t = mem [ t ] .hh .v.RH ; 
  1030.     } while ( ! ( t == r ) ) ; 
  1031.     r = s ; 
  1032.       } 
  1033.       if ( curtok == partoken ) 
  1034.       if ( longstate != 111 ) 
  1035.       {
  1036.     if ( longstate == 110 ) 
  1037.     {
  1038.       runaway () ; 
  1039.       {
  1040.         if ( interaction == 3 ) 
  1041.         wakeupterminal () ; 
  1042.         printnl ( 133 ) ; 
  1043.         print ( 503 ) ; 
  1044.       } 
  1045.       sprintcs ( warningindex ) ; 
  1046.       print ( 504 ) ; 
  1047.       {
  1048.         helpptr = 3 ; 
  1049.         helpline [ 2 ] = 505 ; 
  1050.         helpline [ 1 ] = 506 ; 
  1051.         helpline [ 0 ] = 507 ; 
  1052.       } 
  1053.       backerror () ; 
  1054.     } 
  1055.     pstack [ n ] = mem [ memtop - 3 ] .hh .v.RH ; 
  1056.     alignstate = alignstate - unbalance ; 
  1057.     {register integer for_end; m = 0 ; for_end = n ; if ( m <= for_end) 
  1058.     do 
  1059.       flushlist ( pstack [ m ] ) ; 
  1060.     while ( m++ < for_end ) ; } 
  1061.     goto lab10 ; 
  1062.       } 
  1063.       if ( curtok < 768 ) 
  1064.       if ( curtok < 512 ) 
  1065.       {
  1066.     unbalance = 1 ; 
  1067.     while ( true ) {
  1068.         
  1069.       {
  1070.         {
  1071.           q = avail ; 
  1072.           if ( q == 0 ) 
  1073.           q = getavail () ; 
  1074.           else {
  1075.           
  1076.         avail = mem [ q ] .hh .v.RH ; 
  1077.         mem [ q ] .hh .v.RH = 0 ; 
  1078.     ;
  1079. #ifdef STAT
  1080.         incr ( dynused ) ; 
  1081. #endif /* STAT */
  1082.           } 
  1083.         } 
  1084.         mem [ p ] .hh .v.RH = q ; 
  1085.         mem [ q ] .hh .v.LH = curtok ; 
  1086.         p = q ; 
  1087.       } 
  1088.       gettoken () ; 
  1089.       if ( curtok == partoken ) 
  1090.       if ( longstate != 111 ) 
  1091.       {
  1092.         if ( longstate == 110 ) 
  1093.         {
  1094.           runaway () ; 
  1095.           {
  1096.         if ( interaction == 3 ) 
  1097.         wakeupterminal () ; 
  1098.         printnl ( 133 ) ; 
  1099.         print ( 503 ) ; 
  1100.           } 
  1101.           sprintcs ( warningindex ) ; 
  1102.           print ( 504 ) ; 
  1103.           {
  1104.         helpptr = 3 ; 
  1105.         helpline [ 2 ] = 505 ; 
  1106.         helpline [ 1 ] = 506 ; 
  1107.         helpline [ 0 ] = 507 ; 
  1108.           } 
  1109.           backerror () ; 
  1110.         } 
  1111.         pstack [ n ] = mem [ memtop - 3 ] .hh .v.RH ; 
  1112.         alignstate = alignstate - unbalance ; 
  1113.         {register integer for_end; m = 0 ; for_end = n ; if ( m <= 
  1114.         for_end) do 
  1115.           flushlist ( pstack [ m ] ) ; 
  1116.         while ( m++ < for_end ) ; } 
  1117.         goto lab10 ; 
  1118.       } 
  1119.       if ( curtok < 768 ) 
  1120.       if ( curtok < 512 ) 
  1121.       incr ( unbalance ) ; 
  1122.       else {
  1123.           
  1124.         decr ( unbalance ) ; 
  1125.         if ( unbalance == 0 ) 
  1126.         goto lab31 ; 
  1127.       } 
  1128.     } 
  1129.     lab31: rbraceptr = p ; 
  1130.     {
  1131.       q = getavail () ; 
  1132.       mem [ p ] .hh .v.RH = q ; 
  1133.       mem [ q ] .hh .v.LH = curtok ; 
  1134.       p = q ; 
  1135.     } 
  1136.       } 
  1137.       else {
  1138.       
  1139.     backinput () ; 
  1140.     {
  1141.       if ( interaction == 3 ) 
  1142.       wakeupterminal () ; 
  1143.       printnl ( 133 ) ; 
  1144.       print ( 495 ) ; 
  1145.     } 
  1146.     sprintcs ( warningindex ) ; 
  1147.     print ( 496 ) ; 
  1148.     {
  1149.       helpptr = 6 ; 
  1150.       helpline [ 5 ] = 497 ; 
  1151.       helpline [ 4 ] = 498 ; 
  1152.       helpline [ 3 ] = 499 ; 
  1153.       helpline [ 2 ] = 500 ; 
  1154.       helpline [ 1 ] = 501 ; 
  1155.       helpline [ 0 ] = 502 ; 
  1156.     } 
  1157.     incr ( alignstate ) ; 
  1158.     longstate = 110 ; 
  1159.     curtok = partoken ; 
  1160.     inserror () ; 
  1161.       } 
  1162.       else {
  1163.       
  1164.     if ( curtok == 2592 ) 
  1165.     if ( mem [ r ] .hh .v.LH <= 3584 ) 
  1166.     if ( mem [ r ] .hh .v.LH >= 3328 ) 
  1167.     goto lab22 ; 
  1168.     {
  1169.       q = getavail () ; 
  1170.       mem [ p ] .hh .v.RH = q ; 
  1171.       mem [ q ] .hh .v.LH = curtok ; 
  1172.       p = q ; 
  1173.     } 
  1174.       } 
  1175.       incr ( m ) ; 
  1176.       if ( mem [ r ] .hh .v.LH > 3584 ) 
  1177.       goto lab22 ; 
  1178.       if ( mem [ r ] .hh .v.LH < 3328 ) 
  1179.       goto lab22 ; 
  1180.       lab40: if ( s != 0 ) 
  1181.       {
  1182.     if ( ( m == 1 ) && ( mem [ p ] .hh .v.LH < 768 ) && ( p != memtop - 3 
  1183.     ) ) 
  1184.     {
  1185.       mem [ rbraceptr ] .hh .v.RH = 0 ; 
  1186.       {
  1187.         mem [ p ] .hh .v.RH = avail ; 
  1188.         avail = p ; 
  1189.     ;
  1190. #ifdef STAT
  1191.         decr ( dynused ) ; 
  1192. #endif /* STAT */
  1193.       } 
  1194.       p = mem [ memtop - 3 ] .hh .v.RH ; 
  1195.       pstack [ n ] = mem [ p ] .hh .v.RH ; 
  1196.       {
  1197.         mem [ p ] .hh .v.RH = avail ; 
  1198.         avail = p ; 
  1199.     ;
  1200. #ifdef STAT
  1201.         decr ( dynused ) ; 
  1202. #endif /* STAT */
  1203.       } 
  1204.     } 
  1205.     else pstack [ n ] = mem [ memtop - 3 ] .hh .v.RH ; 
  1206.     incr ( n ) ; 
  1207.     if ( eqtb [ 5297 ] .cint > 0 ) 
  1208.     {
  1209.       begindiagnostic () ; 
  1210.       printnl ( matchchr ) ; 
  1211.       printint ( n ) ; 
  1212.       print ( 514 ) ; 
  1213.       showtokenlist ( pstack [ n - 1 ] , 0 , 1000 ) ; 
  1214.       enddiagnostic ( false ) ; 
  1215.     } 
  1216.       } 
  1217.     } while ( ! ( mem [ r ] .hh .v.LH == 3584 ) ) ; 
  1218.   } 
  1219.   while ( ( curinput .statefield == 0 ) && ( curinput .locfield == 0 ) ) 
  1220.   endtokenlist () ; 
  1221.   begintokenlist ( refcount , 5 ) ; 
  1222.   curinput .namefield = warningindex ; 
  1223.   curinput .locfield = mem [ r ] .hh .v.RH ; 
  1224.   if ( n > 0 ) 
  1225.   {
  1226.     if ( paramptr + n > maxparamstack ) 
  1227.     {
  1228.       maxparamstack = paramptr + n ; 
  1229.       if ( maxparamstack > paramsize ) 
  1230.       overflow ( 494 , paramsize ) ; 
  1231.     } 
  1232.     {register integer for_end; m = 0 ; for_end = n - 1 ; if ( m <= for_end) 
  1233.     do 
  1234.       paramstack [ paramptr + m ] = pstack [ m ] ; 
  1235.     while ( m++ < for_end ) ; } 
  1236.     paramptr = paramptr + n ; 
  1237.   } 
  1238.   lab10: scannerstatus = savescannerstatus ; 
  1239.   warningindex = savewarningindex ; 
  1240. insertrelax () {
  1241.     insertrelax_regmem 
  1242.   curtok = 4096 + curcs ; 
  1243.   backinput () ; 
  1244.   curtok = 7361 ; 
  1245.   backinput () ; 
  1246.   curinput .indexfield = 4 ; 
  1247. expand () {
  1248.     expand_regmem 
  1249.   halfword t  ; 
  1250.   halfword p, q, r  ; 
  1251.   integer j  ; 
  1252.   integer cvbackup  ; 
  1253.   smallnumber cvlbackup, radixbackup, cobackup  ; 
  1254.   halfword backupbackup  ; 
  1255.   smallnumber savescannerstatus  ; 
  1256.   cvbackup = curval ; 
  1257.   cvlbackup = curvallevel ; 
  1258.   radixbackup = radix ; 
  1259.   cobackup = curorder ; 
  1260.   backupbackup = mem [ memtop - 13 ] .hh .v.RH ; 
  1261.   if ( curcmd < 110 ) 
  1262.   {
  1263.     if ( eqtb [ 5303 ] .cint > 1 ) 
  1264.     showcurcmdchr () ; 
  1265.     switch ( curcmd ) 
  1266.     {case 109 : 
  1267.       {
  1268.     if ( curmark [ curchr ] != 0 ) 
  1269.     begintokenlist ( curmark [ curchr ] , 14 ) ; 
  1270.       } 
  1271.       break ; 
  1272.     case 101 : 
  1273.       {
  1274.     gettoken () ; 
  1275.     t = curtok ; 
  1276.     gettoken () ; 
  1277.     if ( curcmd > 99 ) 
  1278.     expand () ; 
  1279.     else backinput () ; 
  1280.     curtok = t ; 
  1281.     backinput () ; 
  1282.       } 
  1283.       break ; 
  1284.     case 102 : 
  1285.       {
  1286.     savescannerstatus = scannerstatus ; 
  1287.     scannerstatus = 0 ; 
  1288.     gettoken () ; 
  1289.     scannerstatus = savescannerstatus ; 
  1290.     t = curtok ; 
  1291.     backinput () ; 
  1292.     if ( t >= 4096 ) 
  1293.     {
  1294.       p = getavail () ; 
  1295.       mem [ p ] .hh .v.LH = 7363 ; 
  1296.       mem [ p ] .hh .v.RH = curinput .locfield ; 
  1297.       curinput .startfield = p ; 
  1298.       curinput .locfield = p ; 
  1299.     } 
  1300.       } 
  1301.       break ; 
  1302.     case 106 : 
  1303.       {
  1304.     r = getavail () ; 
  1305.     p = r ; 
  1306.     do {
  1307.         getxtoken () ; 
  1308.       if ( curcs == 0 ) 
  1309.       {
  1310.         q = getavail () ; 
  1311.         mem [ p ] .hh .v.RH = q ; 
  1312.         mem [ q ] .hh .v.LH = curtok ; 
  1313.         p = q ; 
  1314.       } 
  1315.     } while ( ! ( curcs != 0 ) ) ; 
  1316.     if ( curcmd != 66 ) 
  1317.     {
  1318.       {
  1319.         if ( interaction == 3 ) 
  1320.         wakeupterminal () ; 
  1321.         printnl ( 133 ) ; 
  1322.         print ( 483 ) ; 
  1323.       } 
  1324.       printesc ( 364 ) ; 
  1325.       print ( 484 ) ; 
  1326.       {
  1327.         helpptr = 2 ; 
  1328.         helpline [ 1 ] = 485 ; 
  1329.         helpline [ 0 ] = 486 ; 
  1330.       } 
  1331.       backerror () ; 
  1332.     } 
  1333.     j = first ; 
  1334.     p = mem [ r ] .hh .v.RH ; 
  1335.     while ( p != 0 ) {
  1336.         
  1337.       if ( j >= maxbufstack ) 
  1338.       {
  1339.         maxbufstack = j + 1 ; 
  1340.         if ( maxbufstack == bufsize ) 
  1341.         overflow ( 454 , bufsize ) ; 
  1342.       } 
  1343.       buffer [ j ] = mem [ p ] .hh .v.LH % 256 ; 
  1344.       incr ( j ) ; 
  1345.       p = mem [ p ] .hh .v.RH ; 
  1346.     } 
  1347.     if ( j > first + 1 ) 
  1348.     {
  1349.       nonewcontrolsequence = false ; 
  1350.       curcs = idlookup ( first , j - first ) ; 
  1351.       nonewcontrolsequence = true ; 
  1352.     } 
  1353.     else if ( j == first ) 
  1354.     curcs = 257 ; 
  1355.     else curcs = 129 + buffer [ first ] ; 
  1356.     flushlist ( r ) ; 
  1357.     if ( eqtb [ curcs ] .hh.b0 == 100 ) 
  1358.     {
  1359.       eqdefine ( curcs , 0 , 256 ) ; 
  1360.     } 
  1361.     curtok = curcs + 4096 ; 
  1362.     backinput () ; 
  1363.       } 
  1364.       break ; 
  1365.     case 107 : 
  1366.       convtoks () ; 
  1367.       break ; 
  1368.     case 108 : 
  1369.       insthetoks () ; 
  1370.       break ; 
  1371.     case 104 : 
  1372.       conditional () ; 
  1373.       break ; 
  1374.     case 105 : 
  1375.       if ( curchr > iflimit ) 
  1376.       if ( iflimit == 1 ) 
  1377.       insertrelax () ; 
  1378.       else {
  1379.       
  1380.     {
  1381.       if ( interaction == 3 ) 
  1382.       wakeupterminal () ; 
  1383.       printnl ( 133 ) ; 
  1384.       print ( 633 ) ; 
  1385.     } 
  1386.     printcmdchr ( 105 , curchr ) ; 
  1387.     {
  1388.       helpptr = 1 ; 
  1389.       helpline [ 0 ] = 634 ; 
  1390.     } 
  1391.     error () ; 
  1392.       } 
  1393.       else {
  1394.       
  1395.     while ( curchr != 2 ) passtext () ; 
  1396.     {
  1397.       p = condptr ; 
  1398.       ifline = mem [ p + 1 ] .cint ; 
  1399.       curif = mem [ p ] .hh.b1 ; 
  1400.       iflimit = mem [ p ] .hh.b0 ; 
  1401.       condptr = mem [ p ] .hh .v.RH ; 
  1402.       freenode ( p , 2 ) ; 
  1403.     } 
  1404.       } 
  1405.       break ; 
  1406.     case 103 : 
  1407.       if ( curchr > 0 ) 
  1408.       forceeof = true ; 
  1409.       else if ( nameinprogress ) 
  1410.       insertrelax () ; 
  1411.       else startinput () ; 
  1412.       break ; 
  1413.       default: 
  1414.       {
  1415.     {
  1416.       if ( interaction == 3 ) 
  1417.       wakeupterminal () ; 
  1418.       printnl ( 133 ) ; 
  1419.       print ( 477 ) ; 
  1420.     } 
  1421.     {
  1422.       helpptr = 5 ; 
  1423.       helpline [ 4 ] = 478 ; 
  1424.       helpline [ 3 ] = 479 ; 
  1425.       helpline [ 2 ] = 480 ; 
  1426.       helpline [ 1 ] = 481 ; 
  1427.       helpline [ 0 ] = 482 ; 
  1428.     } 
  1429.     error () ; 
  1430.       } 
  1431.       break ; 
  1432.     } 
  1433.   } 
  1434.   else if ( curcmd < 114 ) 
  1435.   macrocall () ; 
  1436.   else {
  1437.       
  1438.     curtok = 7360 ; 
  1439.     backinput () ; 
  1440.   } 
  1441.   curval = cvbackup ; 
  1442.   curvallevel = cvlbackup ; 
  1443.   radix = radixbackup ; 
  1444.   curorder = cobackup ; 
  1445.   mem [ memtop - 13 ] .hh .v.RH = backupbackup ; 
  1446. getxtoken () {
  1447.     /* 20 30 */ getxtoken_regmem 
  1448.   lab20: getnext () ; 
  1449.   if ( curcmd <= 99 ) 
  1450.   goto lab30 ; 
  1451.   if ( curcmd >= 110 ) 
  1452.   if ( curcmd < 114 ) 
  1453.   macrocall () ; 
  1454.   else {
  1455.       
  1456.     curcs = 3264 ; 
  1457.     curcmd = 9 ; 
  1458.     goto lab30 ; 
  1459.   } 
  1460.   else expand () ; 
  1461.   goto lab20 ; 
  1462.   lab30: if ( curcs == 0 ) 
  1463.   curtok = ( curcmd * 256 ) + curchr ; 
  1464.   else curtok = 4096 + curcs ; 
  1465. xtoken () {
  1466.     xtoken_regmem 
  1467.   while ( curcmd > 99 ) {
  1468.       
  1469.     expand () ; 
  1470.     getnext () ; 
  1471.   } 
  1472.   if ( curcs == 0 ) 
  1473.   curtok = ( curcmd * 256 ) + curchr ; 
  1474.   else curtok = 4096 + curcs ; 
  1475. scanleftbrace () {
  1476.     scanleftbrace_regmem 
  1477.   do {
  1478.       getxtoken () ; 
  1479.   } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1480.   if ( curcmd != 1 ) 
  1481.   {
  1482.     {
  1483.       if ( interaction == 3 ) 
  1484.       wakeupterminal () ; 
  1485.       printnl ( 133 ) ; 
  1486.       print ( 515 ) ; 
  1487.     } 
  1488.     {
  1489.       helpptr = 4 ; 
  1490.       helpline [ 3 ] = 516 ; 
  1491.       helpline [ 2 ] = 517 ; 
  1492.       helpline [ 1 ] = 518 ; 
  1493.       helpline [ 0 ] = 519 ; 
  1494.     } 
  1495.     backerror () ; 
  1496.     curtok = 379 ; 
  1497.     curcmd = 1 ; 
  1498.     curchr = 123 ; 
  1499.     incr ( alignstate ) ; 
  1500.   } 
  1501. scanoptionalequals () {
  1502.     scanoptionalequals_regmem 
  1503.   do {
  1504.       getxtoken () ; 
  1505.   } while ( ! ( curcmd != 10 ) ) ; 
  1506.   if ( curtok != 3133 ) 
  1507.   backinput () ; 
  1508. boolean zscankeyword ( s ) 
  1509. strnumber s ; 
  1510. {/* 10 */ register boolean Result; scankeyword_regmem 
  1511.   halfword p  ; 
  1512.   halfword q  ; 
  1513.   poolpointer k  ; 
  1514.   p = memtop - 13 ; 
  1515.   mem [ p ] .hh .v.RH = 0 ; 
  1516.   k = strstart [ s ] ; 
  1517.   while ( k < strstart [ s + 1 ] ) {
  1518.       
  1519.     getxtoken () ; 
  1520.     if ( ( curcs == 0 ) && ( ( curchr == strpool [ k ] ) || ( curchr == 
  1521.     strpool [ k ] - 32 ) ) ) 
  1522.     {
  1523.       {
  1524.     q = getavail () ; 
  1525.     mem [ p ] .hh .v.RH = q ; 
  1526.     mem [ q ] .hh .v.LH = curtok ; 
  1527.     p = q ; 
  1528.       } 
  1529.       incr ( k ) ; 
  1530.     } 
  1531.     else if ( ( curcmd != 10 ) || ( p != memtop - 13 ) ) 
  1532.     {
  1533.       backinput () ; 
  1534.       if ( p != memtop - 13 ) 
  1535.       begintokenlist ( mem [ memtop - 13 ] .hh .v.RH , 3 ) ; 
  1536.       Result = false ; 
  1537.       return(Result) ; 
  1538.     } 
  1539.   } 
  1540.   flushlist ( mem [ memtop - 13 ] .hh .v.RH ) ; 
  1541.   Result = true ; 
  1542.   return(Result) ; 
  1543. muerror () {
  1544.     muerror_regmem 
  1545.   {
  1546.     if ( interaction == 3 ) 
  1547.     wakeupterminal () ; 
  1548.     printnl ( 133 ) ; 
  1549.     print ( 520 ) ; 
  1550.   } 
  1551.   {
  1552.     helpptr = 1 ; 
  1553.     helpline [ 0 ] = 521 ; 
  1554.   } 
  1555.   error () ; 
  1556. scansevenbitint () {
  1557.     scansevenbitint_regmem 
  1558.   scanint () ; 
  1559.   if ( ( curval < 0 ) || ( curval > 127 ) ) 
  1560.   {
  1561.     {
  1562.       if ( interaction == 3 ) 
  1563.       wakeupterminal () ; 
  1564.       printnl ( 133 ) ; 
  1565.       print ( 543 ) ; 
  1566.     } 
  1567.     {
  1568.       helpptr = 2 ; 
  1569.       helpline [ 1 ] = 544 ; 
  1570.       helpline [ 0 ] = 545 ; 
  1571.     } 
  1572.     interror ( curval ) ; 
  1573.     curval = 0 ; 
  1574.   } 
  1575. scaneightbitint () {
  1576.     scaneightbitint_regmem 
  1577.   scanint () ; 
  1578.   if ( ( curval < 0 ) || ( curval > 255 ) ) 
  1579.   {
  1580.     {
  1581.       if ( interaction == 3 ) 
  1582.       wakeupterminal () ; 
  1583.       printnl ( 133 ) ; 
  1584.       print ( 546 ) ; 
  1585.     } 
  1586.     {
  1587.       helpptr = 2 ; 
  1588.       helpline [ 1 ] = 547 ; 
  1589.       helpline [ 0 ] = 545 ; 
  1590.     } 
  1591.     interror ( curval ) ; 
  1592.     curval = 0 ; 
  1593.   } 
  1594. scanfourbitint () {
  1595.     scanfourbitint_regmem 
  1596.   scanint () ; 
  1597.   if ( ( curval < 0 ) || ( curval > 15 ) ) 
  1598.   {
  1599.     {
  1600.       if ( interaction == 3 ) 
  1601.       wakeupterminal () ; 
  1602.       printnl ( 133 ) ; 
  1603.       print ( 548 ) ; 
  1604.     } 
  1605.     {
  1606.       helpptr = 2 ; 
  1607.       helpline [ 1 ] = 549 ; 
  1608.       helpline [ 0 ] = 545 ; 
  1609.     } 
  1610.     interror ( curval ) ; 
  1611.     curval = 0 ; 
  1612.   } 
  1613. scancharnum () {
  1614.     scancharnum_regmem 
  1615.   scanint () ; 
  1616.   if ( ( curval < 0 ) || ( curval > 255 ) ) 
  1617.   {
  1618.     {
  1619.       if ( interaction == 3 ) 
  1620.       wakeupterminal () ; 
  1621.       printnl ( 133 ) ; 
  1622.       print ( 543 ) ; 
  1623.     } 
  1624.     {
  1625.       helpptr = 2 ; 
  1626.       helpline [ 1 ] = 550 ; 
  1627.       helpline [ 0 ] = 545 ; 
  1628.     } 
  1629.     interror ( curval ) ; 
  1630.     curval = 0 ; 
  1631.   } 
  1632. scanfifteenbitint () {
  1633.     scanfifteenbitint_regmem 
  1634.   scanint () ; 
  1635.   if ( ( curval < 0 ) || ( curval > 32767 ) ) 
  1636.   {
  1637.     {
  1638.       if ( interaction == 3 ) 
  1639.       wakeupterminal () ; 
  1640.       printnl ( 133 ) ; 
  1641.       print ( 551 ) ; 
  1642.     } 
  1643.     {
  1644.       helpptr = 2 ; 
  1645.       helpline [ 1 ] = 552 ; 
  1646.       helpline [ 0 ] = 545 ; 
  1647.     } 
  1648.     interror ( curval ) ; 
  1649.     curval = 0 ; 
  1650.   } 
  1651. scantwentysevenbitin () {
  1652.     scantwentysevenbitin_regmem 
  1653.   scanint () ; 
  1654.   if ( ( curval < 0 ) || ( curval > 134217727L ) ) 
  1655.   {
  1656.     {
  1657.       if ( interaction == 3 ) 
  1658.       wakeupterminal () ; 
  1659.       printnl ( 133 ) ; 
  1660.       print ( 553 ) ; 
  1661.     } 
  1662.     {
  1663.       helpptr = 2 ; 
  1664.       helpline [ 1 ] = 554 ; 
  1665.       helpline [ 0 ] = 545 ; 
  1666.     } 
  1667.     interror ( curval ) ; 
  1668.     curval = 0 ; 
  1669.   } 
  1670. scanfontident () {
  1671.     scanfontident_regmem 
  1672.   internalfontnumber f  ; 
  1673.   halfword m  ; 
  1674.   do {
  1675.       getxtoken () ; 
  1676.   } while ( ! ( curcmd != 10 ) ) ; 
  1677.   if ( curcmd == 87 ) 
  1678.   f = eqtb [ 4578 ] .hh .v.RH ; 
  1679.   else if ( curcmd == 86 ) 
  1680.   f = curchr ; 
  1681.   else if ( curcmd == 85 ) 
  1682.   {
  1683.     m = curchr ; 
  1684.     scanfourbitint () ; 
  1685.     f = eqtb [ m + curval ] .hh .v.RH ; 
  1686.   } 
  1687.   else {
  1688.       
  1689.     {
  1690.       if ( interaction == 3 ) 
  1691.       wakeupterminal () ; 
  1692.       printnl ( 133 ) ; 
  1693.       print ( 670 ) ; 
  1694.     } 
  1695.     {
  1696.       helpptr = 2 ; 
  1697.       helpline [ 1 ] = 671 ; 
  1698.       helpline [ 0 ] = 672 ; 
  1699.     } 
  1700.     backerror () ; 
  1701.     f = 0 ; 
  1702.   } 
  1703.   curval = f ; 
  1704. zfindfontdimen ( writing ) 
  1705. boolean writing ; 
  1706. {findfontdimen_regmem 
  1707.   internalfontnumber f  ; 
  1708.   integer n  ; 
  1709.   scanint () ; 
  1710.   n = curval ; 
  1711.   scanfontident () ; 
  1712.   f = curval ; 
  1713.   if ( n <= 0 ) 
  1714.   curval = fmemptr ; 
  1715.   else {
  1716.       
  1717.     if ( writing && ( n <= 4 ) && ( n >= 2 ) && ( fontglue [ f ] != 0 ) ) 
  1718.     {
  1719.       deleteglueref ( fontglue [ f ] ) ; 
  1720.       fontglue [ f ] = 0 ; 
  1721.     } 
  1722.     if ( n > fontparams [ f ] ) 
  1723.     if ( f < fontptr ) 
  1724.     curval = fmemptr ; 
  1725.     else {
  1726.     
  1727.       do {
  1728.       if ( fmemptr == fontmemsize ) 
  1729.     overflow ( 677 , fontmemsize ) ; 
  1730.     fontinfo [ fmemptr ] .cint = 0 ; 
  1731.     incr ( fmemptr ) ; 
  1732.     incr ( fontparams [ f ] ) ; 
  1733.       } while ( ! ( n == fontparams [ f ] ) ) ; 
  1734.       curval = fmemptr - 1 ; 
  1735.     } 
  1736.     else curval = n + parambase [ f ] ; 
  1737.   } 
  1738.   if ( curval == fmemptr ) 
  1739.   {
  1740.     {
  1741.       if ( interaction == 3 ) 
  1742.       wakeupterminal () ; 
  1743.       printnl ( 133 ) ; 
  1744.       print ( 655 ) ; 
  1745.     } 
  1746.     printesc ( hash [ 3268 + f ] .v.RH ) ; 
  1747.     print ( 673 ) ; 
  1748.     printint ( fontparams [ f ] ) ; 
  1749.     print ( 674 ) ; 
  1750.     {
  1751.       helpptr = 2 ; 
  1752.       helpline [ 1 ] = 675 ; 
  1753.       helpline [ 0 ] = 676 ; 
  1754.     } 
  1755.     error () ; 
  1756.   } 
  1757. zscansomethinginterna ( level , negative ) 
  1758. smallnumber level ; 
  1759. boolean negative ; 
  1760. {scansomethinginterna_regmem 
  1761.   halfword m  ; 
  1762.   integer p  ; 
  1763.   m = curchr ; 
  1764.   switch ( curcmd ) 
  1765.   {case 84 : 
  1766.     {
  1767.       scansevenbitint () ; 
  1768.       if ( m == 5139 ) 
  1769.       {
  1770.     curval = eqtb [ 5139 + curval ] .hh .v.RH ; 
  1771.     curvallevel = 0 ; 
  1772.       } 
  1773.       else if ( m < 5139 ) 
  1774.       {
  1775.     curval = eqtb [ m + curval ] .hh .v.RH ; 
  1776.     curvallevel = 0 ; 
  1777.       } 
  1778.       else {
  1779.       
  1780.     curval = eqtb [ m + curval ] .cint ; 
  1781.     curvallevel = 0 ; 
  1782.       } 
  1783.     } 
  1784.     break ; 
  1785.   case 70 : 
  1786.   case 71 : 
  1787.   case 85 : 
  1788.   case 86 : 
  1789.   case 87 : 
  1790.     if ( level != 5 ) 
  1791.     {
  1792.       {
  1793.     if ( interaction == 3 ) 
  1794.     wakeupterminal () ; 
  1795.     printnl ( 133 ) ; 
  1796.     print ( 522 ) ; 
  1797.       } 
  1798.       {
  1799.     helpptr = 3 ; 
  1800.     helpline [ 2 ] = 523 ; 
  1801.     helpline [ 1 ] = 524 ; 
  1802.     helpline [ 0 ] = 525 ; 
  1803.       } 
  1804.       backerror () ; 
  1805.       {
  1806.     curval = 0 ; 
  1807.     curvallevel = 1 ; 
  1808.       } 
  1809.     } 
  1810.     else if ( curcmd <= 71 ) 
  1811.     {
  1812.       if ( curcmd < 71 ) 
  1813.       {
  1814.     scaneightbitint () ; 
  1815.     m = 4066 + curval ; 
  1816.       } 
  1817.       {
  1818.     curval = eqtb [ m ] .hh .v.RH ; 
  1819.     curvallevel = 5 ; 
  1820.       } 
  1821.     } 
  1822.     else {
  1823.     
  1824.       backinput () ; 
  1825.       scanfontident () ; 
  1826.       {
  1827.     curval = 3268 + curval ; 
  1828.     curvallevel = 4 ; 
  1829.       } 
  1830.     } 
  1831.     break ; 
  1832.   case 72 : 
  1833.     {
  1834.       curval = eqtb [ m ] .cint ; 
  1835.       curvallevel = 0 ; 
  1836.     } 
  1837.     break ; 
  1838.   case 73 : 
  1839.     {
  1840.       curval = eqtb [ m ] .cint ; 
  1841.       curvallevel = 1 ; 
  1842.     } 
  1843.     break ; 
  1844.   case 74 : 
  1845.     {
  1846.       curval = eqtb [ m ] .hh .v.RH ; 
  1847.       curvallevel = 2 ; 
  1848.     } 
  1849.     break ; 
  1850.   case 75 : 
  1851.     {
  1852.       curval = eqtb [ m ] .hh .v.RH ; 
  1853.       curvallevel = 3 ; 
  1854.     } 
  1855.     break ; 
  1856.   case 78 : 
  1857.     if ( abs ( curlist .modefield ) != m ) 
  1858.     {
  1859.       {
  1860.     if ( interaction == 3 ) 
  1861.     wakeupterminal () ; 
  1862.     printnl ( 133 ) ; 
  1863.     print ( 536 ) ; 
  1864.       } 
  1865.       printcmdchr ( 78 , m ) ; 
  1866.       {
  1867.     helpptr = 4 ; 
  1868.     helpline [ 3 ] = 537 ; 
  1869.     helpline [ 2 ] = 538 ; 
  1870.     helpline [ 1 ] = 539 ; 
  1871.     helpline [ 0 ] = 540 ; 
  1872.       } 
  1873.       error () ; 
  1874.       if ( level != 5 ) 
  1875.       {
  1876.     curval = 0 ; 
  1877.     curvallevel = 1 ; 
  1878.       } 
  1879.       else {
  1880.       
  1881.     curval = 0 ; 
  1882.     curvallevel = 0 ; 
  1883.       } 
  1884.     } 
  1885.     else {
  1886.     
  1887.       curval = curlist .auxfield ; 
  1888.       if ( m == 1 ) 
  1889.       curvallevel = 1 ; 
  1890.       else curvallevel = 0 ; 
  1891.     } 
  1892.     break ; 
  1893.   case 79 : 
  1894.     {
  1895.       nest [ nestptr ] = curlist ; 
  1896.       p = nestptr ; 
  1897.       while ( abs ( nest [ p ] .modefield ) != 1 ) decr ( p ) ; 
  1898.       {
  1899.     curval = nest [ p ] .pgfield ; 
  1900.     curvallevel = 0 ; 
  1901.       } 
  1902.     } 
  1903.     break ; 
  1904.   case 81 : 
  1905.     {
  1906.       if ( m == 0 ) 
  1907.       curval = deadcycles ; 
  1908.       else curval = insertpenalties ; 
  1909.       curvallevel = 0 ; 
  1910.     } 
  1911.     break ; 
  1912.   case 80 : 
  1913.     {
  1914.       if ( pagecontents == 0 ) 
  1915.       if ( m == 0 ) 
  1916.       curval = 1073741823L ; 
  1917.       else curval = 0 ; 
  1918.       else curval = pagesofar [ m ] ; 
  1919.       curvallevel = 1 ; 
  1920.     } 
  1921.     break ; 
  1922.   case 83 : 
  1923.     {
  1924.       if ( eqtb [ 4056 ] .hh .v.RH == 0 ) 
  1925.       curval = 0 ; 
  1926.       else curval = mem [ eqtb [ 4056 ] .hh .v.RH ] .hh .v.LH ; 
  1927.       curvallevel = 0 ; 
  1928.     } 
  1929.     break ; 
  1930.   case 82 : 
  1931.     {
  1932.       scaneightbitint () ; 
  1933.       if ( eqtb [ 4322 + curval ] .hh .v.RH == 0 ) 
  1934.       curval = 0 ; 
  1935.       else curval = mem [ eqtb [ 4322 + curval ] .hh .v.RH + m ] .cint ; 
  1936.       curvallevel = 1 ; 
  1937.     } 
  1938.     break ; 
  1939.   case 67 : 
  1940.   case 68 : 
  1941.     {
  1942.       curval = curchr ; 
  1943.       curvallevel = 0 ; 
  1944.     } 
  1945.     break ; 
  1946.   case 76 : 
  1947.     {
  1948.       findfontdimen ( false ) ; 
  1949.       fontinfo [ fmemptr ] .cint = 0 ; 
  1950.       {
  1951.     curval = fontinfo [ curval ] .cint ; 
  1952.     curvallevel = 1 ; 
  1953.       } 
  1954.     } 
  1955.     break ; 
  1956.   case 77 : 
  1957.     {
  1958.       scanfontident () ; 
  1959.       if ( m == 0 ) 
  1960.       {
  1961.     curval = hyphenchar [ curval ] ; 
  1962.     curvallevel = 0 ; 
  1963.       } 
  1964.       else {
  1965.       
  1966.     curval = skewchar [ curval ] ; 
  1967.     curvallevel = 0 ; 
  1968.       } 
  1969.     } 
  1970.     break ; 
  1971.   case 88 : 
  1972.     {
  1973.       scaneightbitint () ; 
  1974.       switch ( m ) 
  1975.       {case 0 : 
  1976.     curval = eqtb [ 5317 + curval ] .cint ; 
  1977.     break ; 
  1978.       case 1 : 
  1979.     curval = eqtb [ 5721 + curval ] .cint ; 
  1980.     break ; 
  1981.       case 2 : 
  1982.     curval = eqtb [ 3544 + curval ] .hh .v.RH ; 
  1983.     break ; 
  1984.       case 3 : 
  1985.     curval = eqtb [ 3800 + curval ] .hh .v.RH ; 
  1986.     break ; 
  1987.       } 
  1988.       curvallevel = m ; 
  1989.     } 
  1990.     break ; 
  1991.   case 69 : 
  1992.     {
  1993.       if ( curchr == 2 ) 
  1994.       curval = 0 ; 
  1995.       else curval = 0 ; 
  1996.       curvallevel = curchr ; 
  1997.       if ( ! ( curlist .tailfield >= himemmin ) && ( curlist .modefield != 0 ) 
  1998.       ) 
  1999.       switch ( curchr ) 
  2000.       {case 0 : 
  2001.     if ( mem [ curlist .tailfield ] .hh.b0 == 12 ) 
  2002.     curval = mem [ curlist .tailfield + 1 ] .cint ; 
  2003.     break ; 
  2004.       case 1 : 
  2005.     if ( mem [ curlist .tailfield ] .hh.b0 == 11 ) 
  2006.     curval = mem [ curlist .tailfield + 1 ] .cint ; 
  2007.     break ; 
  2008.       case 2 : 
  2009.     if ( mem [ curlist .tailfield ] .hh.b0 == 10 ) 
  2010.     {
  2011.       curval = mem [ curlist .tailfield + 1 ] .hh .v.LH ; 
  2012.       if ( mem [ curlist .tailfield ] .hh.b1 == 99 ) 
  2013.       curvallevel = 3 ; 
  2014.     } 
  2015.     break ; 
  2016.       } 
  2017.       else if ( ( curlist .modefield == 1 ) && ( curlist .tailfield == curlist 
  2018.       .headfield ) ) 
  2019.       switch ( curchr ) 
  2020.       {case 0 : 
  2021.     curval = lastpenalty ; 
  2022.     break ; 
  2023.       case 1 : 
  2024.     curval = lastkern ; 
  2025.     break ; 
  2026.       case 2 : 
  2027.     if ( lastglue != 65535L ) 
  2028.     curval = lastglue ; 
  2029.     break ; 
  2030.       } 
  2031.     } 
  2032.     break ; 
  2033.     default: 
  2034.     {
  2035.       {
  2036.     if ( interaction == 3 ) 
  2037.     wakeupterminal () ; 
  2038.     printnl ( 133 ) ; 
  2039.     print ( 541 ) ; 
  2040.       } 
  2041.       printcmdchr ( curcmd , curchr ) ; 
  2042.       print ( 542 ) ; 
  2043.       printesc ( 395 ) ; 
  2044.       {
  2045.     helpptr = 1 ; 
  2046.     helpline [ 0 ] = 540 ; 
  2047.       } 
  2048.       error () ; 
  2049.       if ( level != 5 ) 
  2050.       {
  2051.     curval = 0 ; 
  2052.     curvallevel = 1 ; 
  2053.       } 
  2054.       else {
  2055.       
  2056.     curval = 0 ; 
  2057.     curvallevel = 0 ; 
  2058.       } 
  2059.     } 
  2060.     break ; 
  2061.   } 
  2062.   while ( curvallevel > level ) {
  2063.       
  2064.     if ( curvallevel == 2 ) 
  2065.     curval = mem [ curval + 1 ] .cint ; 
  2066.     else if ( curvallevel == 3 ) 
  2067.     muerror () ; 
  2068.     decr ( curvallevel ) ; 
  2069.   } 
  2070.   if ( negative ) 
  2071.   if ( curvallevel >= 2 ) 
  2072.   {
  2073.     curval = newspec ( curval ) ; 
  2074.     {
  2075.       mem [ curval + 1 ] .cint = - (integer) mem [ curval + 1 ] .cint ; 
  2076.       mem [ curval + 2 ] .cint = - (integer) mem [ curval + 2 ] .cint ; 
  2077.       mem [ curval + 3 ] .cint = - (integer) mem [ curval + 3 ] .cint ; 
  2078.     } 
  2079.   } 
  2080.   else curval = - (integer) curval ; 
  2081.   else if ( ( curvallevel >= 2 ) && ( curvallevel <= 3 ) ) 
  2082.   incr ( mem [ curval ] .hh .v.RH ) ; 
  2083.